﻿//53. 最大子数组和
//给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
//子数组是数组中的一个连续部分。
class Solution {
public:
    int maxSubArray(vector<int>& nums)
    {
        int ans = 0, pre = 0, big = nums[0];
        for (auto& e : nums)
        {
            if (big < e)
                big = e;
            pre += e;
            ans = max(pre, ans);
            if (pre < 0)
            {
                pre = 0;
            }
        }
        if (big < 0)
        {
            return big;
        }
        pre = max(pre, ans);
        return ans;
    }
};